home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 May / PCWMAY06.iso / Software / Trial / ConceptDraw NetDiagrammer / data1.cab / Samples__Basic / Solutions / OrgChart / XMLBasedChart.cdb < prev    next >
Text File  |  2006-02-08  |  8KB  |  139 lines

  1. '╨ö╨▓╨░ ╨╝╨░╤ü╤ü╨╕╨▓╨░ ╨╛╨┐╨╕╤ü╤ï╨▓╨░╤Ä╤é ╤Ç╨░╤ü╨┐╨╛╨╗╨╛╨╢╨╡╨╜╨╕╨╡ ╨╛╨▒╤è╨╡╨║╤é╨╛╨▓ ╨▓ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨╡ ConceptDraw, ╨║╨╛╨│╨┤╨░ ╨╛╨╜╨╕ ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╤Å╤Ä╤é
  2. '╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨╜╨╡╨║╨╛╤é╨╛╤Ç╨╛╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å ╤ü╨╗╤â╨╢╨╡╨▒╨╜╨╛╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕. ╨á╨░╨╖╨╝╨╡╤Ç╨╜╨╛╤ü╤é╤î ╨╝╨░╤ü╤ü╨╕╨▓╨░ ╤Ç╨░╨▓╨╜╨░ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╤â ╤â╤Ç╨╛╨▓╨╜╨╡╨╣
  3. '╤ü╨╗╤â╨╢╨╡╨▒╨╜╨╛╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕.
  4.  
  5. '╨₧╨┐╤Ç╨╡╨┤╨╡╨╗╤Å╤Ä╤é╤ü╤Å ╨╜╨░╨┐╤Ç╨░╨▓╨╗╨╡╨╜╨╕╤Å, ╨┐╨╛ ╨║╨╛╤é╨╛╤Ç╤ï╨╝ ╨▒╤â╨┤╤â╤é ╤Ç╨░╤ü╨┐╨╛╨╗╨░╨│╨░╤é╤î╤ü╤Å ╨╛╨▒╤è╨╡╨║╤é╤ï ╨▓ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨╡ ╨╜╨░ ╤ì╤é╨╛╨╝ ╤â╤Ç╨╛╨▓╨╜╨╡
  6. '╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕. ╨ƒ╤Ç╨╕╨╜╨╕╨╝╨░╨╡╤é ╨╛╨┤╨╜╨╛ ╨╕╨╖ ╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╣ ╨║╨╛╨╜╤ü╤é╨░╨╜╤é conbytAlone, conbytVertical, conbytHorizontal.
  7. Dim aiDirection() As Integer
  8. '╨£╨░╨║╤ü╨╕╨╝╨░╨╗╤î╨╜╨╛╨╡ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à ╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨╜╨░ ╤ì╤é╨╛╨╝ ╤â╤Ç╨╛╨▓╨╜╨╡ ╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕
  9. Dim aiMaxBranches() As Integer
  10. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╤ì╤é╨╕╤à ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓
  11. Dim iStatUBound As Integer
  12.  
  13.  
  14.  
  15. '╨ô╤Ç╤â╨┐╨┐╨░ ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓, ╤ü╨╛╨┤╨╡╤Ç╨╢╨░╤ë╨╕╤à ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░╤à. ╨Ü╨░╨╢╨┤╨╛╨╝╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╤â ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╤Ä╤é ╨┤╨░╨╜╨╜╤ï╨╡
  16. '╤ü ╨╛╨┤╨╕╨╜╨░╨║╨╛╨▓╤ï╨╝ ╨╕╨╜╨┤╨╡╨║╤ü╨╛╨╝. ╨¥╤â╨╗╨╡╨▓╨╛╨╣ ╨╕╨╜╨┤╨╡╨║╤ü ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╨╡╤é ╤ä╨╕╨║╤é╨╕╨▓╨╜╨╛╨╝╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╤â ╤ü╨░╨╝╨╛╨│╨╛ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å.
  17. '╨Æ╨▓╨╛╨┤╨╕╤é╤ü╤Å ╨┤╨╗╤Å ╤â╨┐╤Ç╨╛╤ë╨╡╨╜╨╕╤Å ╨░╨╗╨│╨╛╤Ç╨╕╤é╨╝╨░. ╨á╨╡╨░╨╗╤î╨╜╤ï╨╡ ╤Ç╤â╨║╨╛╨▓╨╛╨┤╨╕╤é╨╡╨╗╨╕ ╤ü╨░╨╝╨╛╨│╨╛ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å ╤ü╤ç╨╕╤é╨░╤Ä╤é╤ü╤Å ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╨╝╨╕
  18. '╤ì╤é╨╛╨│╨╛ ╤â╤ü╨╗╨╛╨▓╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░.
  19.  
  20. 'ID ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤ï╤à
  21. Dim asID() As String
  22. 'ID ╨╜╨╡╨┐╨╛╤ü╤Ç╨╡╨┤╤ü╤é╨▓╨╡╨╜╨╜╨╛╨│╨╛ ╨╜╨░╤ç╨░╨╗╤î╨╜╨╕╨║╨░ ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤ï╤à
  23. Dim asChiefID() As String
  24. '╨ñ╨ÿ╨₧ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  25. Dim asName() As String
  26. '╨ö╨╛╨╗╨╢╨╜╨╛╤ü╤é╤î ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  27. Dim asPost() As String
  28. '╨É╨┤╤Ç╨╡╤ü ╤ì╨╗╨╡╨║╤é╤Ç╨╛╨╜╨╜╨╛╨╣ ╨┐╨╛╤ç╤é╤ï ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  29. Dim asEMail() As String
  30. '╨ö╨╛╨┐╨╛╨╗╨╜╨╕╤é╨╡╨╗╤î╨╜╨░╤Å ╨╕╨╜╤ä╨╛╤Ç╨╝╨░╤å╨╕╤Å
  31. Dim asCustom() As String
  32. Dim iCustomCount As Integer
  33. iCustomCount = 0
  34. '╨ú╤Ç╨╛╨▓╨╡╨╜╤î ╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕ ╨╛╨▒╤è╨╡╨║╤é╨░, ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╤Å╤Ä╤ë╨╡╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░, ╨▓ ╨╛╨▒╤ë╨╡╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕
  35. Dim aiLevel() As Integer
  36. '╨¿╨╕╤Ç╨╕╨╜╨░ ╨▓╨╡╤é╨▓╨╕, ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╨╝╨╛╨╣ ╨┤╨░╨╜╨╜╤ï╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╛╨╝
  37. Dim adBranchWidth() As Double
  38. '╨Æ╤ï╤ü╨╛╤é╨░ ╨▓╨╡╤é╨▓╨╕, ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╨╝╨╛╨╣ ╨┤╨░╨╜╨╜╤ï╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╛╨╝
  39. Dim adBranchHeight() As Double
  40. '╨ñ╨╗╨░╨│, ╤â╨║╨░╨╖╤ï╨▓╨░╤Ä╤ë╨╕╨╣, ╤ç╤é╨╛ ╨┤╨░╨╜╨╜╤ï╨╣ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║ ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╤é ╨▓╨╡╤é╨▓╤î, ╨║╨╛╤é╨╛╤Ç╤â╤Ä ╤ü╨╗╨╡╨┤╤â╨╡╤é ╨╕╨╖╨╛╨▒╤Ç╨░╨╖╨╕╤é╤î ╨╜╨░ ╨╛╤é╨┤╨╡╨╗╤î╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡
  41. Dim abNewPage() As Boolean
  42. '╨Ü╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à ╤â ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  43. Dim asSubordCount() As Integer
  44. '╨ö╨▓╤â╨╝╨╡╤Ç╨╜╤ï╨╣ ╨╝╨░╤ü╤ü╨╕╨▓. ╨ö╨╗╤Å ╨║╨░╨╢╨┤╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╤ü╨╛╨┤╨╡╤Ç╨╢╨╕╤é ╨╕╨╜╨┤╨╡╨║╤ü╤ï ╨▓╤ü╨╡╤à ╨╡╨│╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à. ╨ƒ╨╛╨╖╨▓╨╛╨╗╤Å╨╡╤é 
  45. '╨╛╨▒╤Ç╨░╨▒╨░╤é╤ï╨▓╨░╤é╤î ╤ü╤à╨╡╨╝╤â ╨║╨░╨║ ╨┤╤Ç╨╡╨▓╨╛╨▓╨╕╨┤╨╜╤â╤Ä ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â. 
  46. Dim asSubordinates() As Integer
  47. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╤ì╤é╨╕╤à ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓
  48. Dim iUBound As Integer
  49. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╨▓╤é╨╛╤Ç╨╛╨╣ ╤Ç╨░╨╖╨╝╨╡╤Ç╨╜╨╛╤ü╤é╨╕ ╨╝╨░╤ü╤ü╨╕╨▓╨░ asSubordinates
  50. Dim iUBound2 As Integer             
  51.  
  52. '╨¥╨░╨╖╨▓╨░╨╜╨╕╨╡ ╨║╨╛╨╝╨┐╨░╨╜╨╕╨╕
  53. Dim strOrgName As String
  54.  
  55. '╨ñ╨╗╨░╨│, ╤â╨║╨░╨╖╤ï╨▓╨░╤Ä╤ë╨╕╨╣ ╤ü╤é╤Ç╨╛╨╕╤é╤ü╤Å ╨╗╨╕ ╤ü╤à╨╡╨╝╨░ ╨╜╨░ ╨╡╨┤╨╕╨╜╤ü╤é╨▓╨╡╨╜╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡ ╨╕╨╗╨╕ ╨╜╨░ ╨╜╨╡╤ü╨║╨╛╨╗╤î╨║╨╕╤à.
  56. Dim bAllOnOnePage As Boolean
  57.  
  58. '╨¿╨╕╤Ç╨╕╨╜╨░ ╨╕ ╨▓╤ï╤ü╨╛╤é╨░ ╤ü╤é╤Ç╨░╨╜╨╕╤å╤ï ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░ ╨▓ Units.
  59. Dim intChartWidth As Integer
  60. Dim intChartHeight As Integer
  61.  
  62. '╨ó╨╡╨║╤ü╤é╨╛╨▓╤ï╨╣ ╨▒╤â╤ä╨╡╤Ç, ╨▓ ╨║╨╛╤é╨╛╤Ç╤ï╨╣ ╨╖╨░╤ç╨╕╤é╤ï╨▓╨░╤Ä╤é╤ü╤Å ╤ü╨╕╨╝╨▓╨╛╨╗╤ï ╨╕╨╖ XML-╤ä╨░╨╣╨╗╨░
  63. Dim strBuffer As String
  64.  
  65. Declare Sub BuildOrgChart(ByRef sOnOnePage As String)
  66. Declare Sub RedimArrays(ByVal intUBound As Integer, ByVal intUBound2 As Integer)
  67. Declare Function BuildOrgTreeFromXML(ByRef strTextFileName As String) As Boolean
  68. Declare Function GetXMLTag(ByRef strTag As String, ByVal intFileNumber As Integer) As Integer
  69. Declare Function GetXMLTextValue(ByRef strTag As String, ByVal intFileNumber As Integer) As Integer
  70. Declare Sub ReplaceChr10And13(ByRef strText As String)
  71. Declare Function ReReplaceSymbols(ByRef strText As String) As String
  72. Declare Sub GetBranchStatistic(ByRef iPersonStart As Integer, ByVal intLevel As Integer)
  73. Declare Sub SetBranchSize(ByRef iPersonStart As Integer, ByVal intLevel As Integer, ByRef dblReturnX As Double, ByRef dblReturnY As Double)
  74. Declare Sub GetOrgStatistic()
  75. Declare Sub IsBranchTooLarge(ByRef iPersonStart As Integer)
  76. Declare Sub DrawChart()
  77. Declare Sub DrawBranch(ByRef intPerson As Integer, ByVal lPage As Long, ByVal dblChiefShapeX As Double, ByVal dblChiefShapeY As Double, ByVal dblShapeX As Double, ByVal dblShapeY As Double, ByRef intReturnPersonLinkNextPages As Integer, ByRef bReturnPersonLinkNextPages As Boolean, ByRef intLinkToPage As Integer, ByVal workLib As Library)
  78. Declare Sub DrawPersonData(ByVal intPerson As Integer, ByRef activePage As Page, ByVal dblShapeX As Double, ByVal dblShapeY As Double, ByVal intLinkToPage As Integer, ByVal workLib As Library)
  79.  
  80. #INCLUDE "consts.cdb"
  81. #INCLUDE "drawFunctions.cdb"
  82. #INCLUDE "loadXMLFunctions.cdb" 
  83.  
  84. '========================================================================================================================
  85. '========================================================================================================================
  86.  
  87. '╨í╨╛╨╖╨┤╨░╨╜╨╕╨╡ ╨┐╨╛╨╗╤î╨╖╨╛╨▓╨░╤é╨╡╨╗╤î╤ü╨║╨╛╨│╨╛ ╨╝╨╡╨╜╤Ä. ╨É╨▓╤é╨╛╨╝╨░╤é╨╕╤ç╨╡╤ü╨║╨╕ ╨▓╤ï╨╖╤ï╨▓╨░╨╡╤é╤ü╤Å ╨┐╤Ç╨╕ ╨╛╤é╨║╤Ç╤ï╤é╨╕╨╕ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░ ╨╕╨╖
  88. '╨╝╨░╨║╤Ç╨╛╤ü╨░ ╤â╤Ç╨╛╨▓╨╜╤Å ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░.
  89. Sub CreateUserMenu()
  90.     Dim custMenu As Menu
  91.     Dim newMenuItem As MenuItem
  92.     
  93.     Set custMenu = thisDoc.CustomMenu
  94.     custMenu.Caption = "&BuildOrgChart"
  95.     custMenu.RemoveAll()
  96.  
  97.     Set newMenuItem = custMenu.AddMenuItem(0)
  98.     newMenuItem.Caption = "All On A &One Page"
  99.     newMenuItem.OnCmdArgs = "True"
  100.     newMenuItem.SetCmdProcessing("BuildOrgChart")
  101.      
  102.     Set newMenuItem = custMenu.AddMenuItem(0)
  103.     newMenuItem.Caption = "All On A &Few Page"
  104.     newMenuItem.OnCmdArgs = "False"
  105.     newMenuItem.SetCmdProcessing("BuildOrgChart")
  106. End Sub
  107.  
  108. '========================================================================================================================
  109. '========================================================================================================================
  110.  
  111. '╨₧╤ü╨╜╨╛╨▓╨╜╨░╤Å ╤â╨┐╤Ç╨░╨▓╨╗╤Å╤Ä╤ë╨░╤Å ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╨░.
  112. Sub BuildOrgChart(ByRef sOnOnePage As String)
  113. On Error GoTo ErrHandler
  114.     Dim strXMLFileName As String
  115.     If sOnOnePage = "True" Then
  116.         bAllOnOnePage = True
  117.     Else
  118.         bAllOnOnePage = False
  119.     End If        
  120.     
  121.     '╨ƒ╨╛╨╗╤â╤ç╨╕╤é╤î ╨╕╨╝╤Å XML-╤ä╨░╨╣╨╗╨░, ╨╛╨┐╨╕╤ü╤ï╨▓╨░╤Ä╤ë╨╡╨│╨╛ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕.
  122.     strXMLFileName = GetOpenFileName(constrXMLFileExt, "CDBasic OrgChart XML Files")
  123.     If strXMLFileName <> "" Then 
  124.     '╨ò╤ü╨╗╨╕ ╨╕╨╝╤Å ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╛, ╨╛╨▒╤Ç╨░╨▒╨░╤é╤ï╨▓╨░╨╡╨╝ ╤é╨╡╨║╤ü╤é, ╨╖╨░╤ç╨╕╤é╤ï╨▓╨░╨╡╨╝ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕ ╨╕ ╨╖╨░╨┐╨╛╨╗╨╜╤Å╨╡╨╝ ╨╝╨░╤ü╤ü╨╕╨▓╤ï ╨┤╨░╨╜╨╜╤ï╤à.
  125.         If BuildOrgTreeFromXML(strXMLFileName) Then        
  126.         '╨ò╤ü╨╗╨╕ ╨┐╤Ç╨╕ ╨╖╨░╤ç╨╕╤é╤ï╨▓╨░╨╜╨╕╨╕ ╤ä╨░╨╣╨╗╨╛╨▓ ╨╜╨╡ ╨┐╤Ç╨╛╨╕╨╖╨╛╤ê╨╗╨╛ ╨╛╤ê╨╕╨▒╨╛╨║, ╨╛╨┐╤Ç╨╡╨┤╨╡╨╗╤Å╨╡╨╝ ╤ü╤é╨░╤é╨╕╤ü╤é╨╕╨║╤â ╨╕ ╨┐╨░╤Ç╨░╨╝╨╡╤é╤Ç╤ï ╨▓╤ï╨▓╨╛╨┤╨░ ╨┤╨╕╨░╨│╤Ç╨░╨╝╨╝╤ï...
  127.             GetOrgStatistic()            
  128.             '...╨╕ ╤Ç╨╕╤ü╤â╨╡╨╝ ╨╡╨╡.
  129.             DrawChart()        
  130.         End IF
  131.         
  132.     End If    
  133.     Exit Sub
  134.  
  135. ErrHandler:
  136.     MsgBox ("In performing the macros, an error has occured.", cdbExclamation)
  137.  
  138. End Sub
  139.